import router from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { isRelogin, isReTGBlogin } from "@/utils/request";
import { logout } from "@/api/system/user";
import { Base64 } from "js-base64";

NProgress.configure({ showSpinner: false })

const whiteList = ['/login', '/auth-redirect', '/bind', '/register']

router.beforeEach((to, from, next) => {
  NProgress.start()
  if (getToken()) {
    to.meta.title && store.dispatch("settings/setTitle", to.meta.title);
    /* has token*/
    if (to.path === "/login") {
      next({ path: "/" });
      NProgress.done();
    } else {
      if (store.getters.roles.length === 0) {
        isRelogin.show = true;
        // 判断当前用户是否已拉取完user_info信息
        store
          .dispatch("GetInfo")
          .then(() => {
            isRelogin.show = false;
            store.dispatch("GenerateRoutes").then((accessRoutes) => {
              // 根据roles权限生成可访问的路由表
              router.addRoutes(accessRoutes); // 动态新增可访问路由表
              next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
            });
          })
          .catch((err) => {
            store.dispatch("LogOut").then(() => {
              Message.error(err);
              next({ path: "/" });
            });
          });
      } else {
        next();
      }
    }
  } else {
    if (to.query.msg != undefined) {
      sessionStorage.setItem("wedmsgToken", to.query.msg);
      sessionStorage.setItem("wedrefreshToken", to.query.refresh);
      store
        .dispatch(
          "tgbLogin",
          to.query.msg || sessionStorage.getItem("wedmsgToken")
        )
        .then(
          (res, type) => {
            console.log(res, "resres");
            console.log(isReTGBlogin.type, "type");
            if (res.code === 4001) {
              store
                .dispatch("LogOut")
                .then(() => {
                  let data = {
                    access_token: sessionStorage.getItem("wedmsgToken"),
                    refresh_token: sessionStorage.getItem("wedrefreshToken"),
                    Referer: "https://cspttongguanbao.net/",
                  };
                  logout(data).then((response) => {
                    sessionStorage.removeItem("weduserInfo");
                    sessionStorage.removeItem("wedmsgToken");
                    sessionStorage.removeItem("wedrefreshToken");
                    next({ path: "/" });
                    if (isReTGBlogin.type == "1") {
                      let ip = window.location.host;
                      let src = Base64.encode("http://" + ip);
                      let service =
                        "https://cspt.tongguanbao.net/loginweb/loginPC.html?service=" +
                        `${src}` +
                        "&form=Mg==";
                      window.location.href = service;
                    }
                    Message.error(res.msg)
                  });
                })
                .catch((err) => {
                  console.log(err);
                });
            } else if (res.code == 200) {
              console.log("登好了", "0909090");
              // sessionStorage.getItem(res.data.refreshToken);
              next({ path: "/index" });
            }
            //       // if (store.getters.roles.length === 0) {
            //       //   isRelogin.show = true;
            //       //   // 判断当前用户是否已拉取完user_info信息
            //       //   store
            //       //     .dispatch("GetInfo")
            //       //     .then(() => {
            //       //       isRelogin.show = false;
            //       //       store.dispatch("GenerateRoutes").then((accessRoutes) => {
            //       //         // 根据roles权限生成可访问的路由表
            //       //         router.addRoutes(accessRoutes); // 动态新增可访问路由表
            //       //         next({ ...to, replace: true }); // hack方法 确保addRoutes已完成
            //       //       });
            //       //     })
            //       //     .catch((err) => {
            //       //       store.dispatch("LogOut").then(() => {
            //       //         Message.error(err);
            //       //         next({ path: "/" });
            //       //       });
            //       //     });
            //       // } else {
            //       //   next();
            //       // }
          },
          (error) => {
            console.log(error);
          }
        );
    } else {
      // 没有token
      if (whiteList.indexOf(to.path) !== -1) {
        // 在免登录白名单，直接进入
        next();
      } else {
        next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
        NProgress.done();
      }
    }

    
  }
})

router.afterEach(() => {
  NProgress.done()
})
